package org.stone.project.securityInterface.pojo.dto;

import cn.hutool.extra.spring.SpringUtil;
import lombok.Getter;
import lombok.Setter;
import org.stone.project.securityInterface.service.UserInfoService;

import java.util.List;

/**
 * 角色信息
 * @param <T>
 */
@Getter
@Setter
public class UserInfoDto<T> {
    private UserInfoDto(){
        //仅支持通过登录数据提取
    }

    /**
     * 用户信息转换
     * @param cacheUserInfo
     * @return
     * @param <T>
     */
    public static <T> UserInfoDto<T> initUserInfoDto(T cacheUserInfo){
        return SpringUtil.getBean(UserInfoService.class)
                .transferUserInfoDto(cacheUserInfo);
    }


    /**
     * 渠道标识
     */
    private String channel;

    /**
     * 用户标识
     */
    private String userKey;

    /**
     * 登录角色
     */
    private String loginRoleKey;

    /**
     * 角色标识
     */
    private List<String> roleKeys;

    /**
     * 权限信息
     */
    private List<String> permissions;

    /**
     * 用户主体信息
     */
    private T infoData;
}
